This is an R Markdown notebook.

These notebooks are an excellent option when you’re testing out new code or developing an analysis becase they make it super easy to capture your thought process and intermediate results along the way.

The same conventions apply as markdown documents that you would knit to pdf, word, or powerpoint, however these notebooks are intended more as a workbook format and give you some enhanced formatting to allow you to follow what your code was doing later.

Recall: refer to the RMarkdown Cheatsheets for Markdown tips and tricks!

Each time you save the notebook, R will render it as an HTML file that you can open and browse in your web browser. Or you can click PREVIEW at the top of the screen and you’ll see a preview of the notebook in the RStudio Viewer pane.

Reading Data:

As we saw in the 10 Considerations for Data Analysis, the first step we’ll often want to consider is reading our data into R, so lets do that now!

cavity1 <- read_tsv(here("data","cavity_pt1.tsv"))
cavity2 <- read_tsv(here("data","cavity_pt2.tsv"))
desserts <- read_tsv(here("data","dessert.tsv"))

Let’s go ahead and have a quick look at some of the data we just loaded:

cavity1
cavity2
# print(cavity1)
# print(cavity2)

Append Data

It looks like cavity1 and cavity2 are incomplete, we’ll need to append those together to get the full set of cavity data:

cavities <- bind_rows(cavity1, cavity2)
print(cavities)

Clean Data

Hmm, Joanne has been duplicated in the dataset.. what are some ways that we can drop the duplicated record?

# We could use base R indexing like we learned in Day 1, and drop the 3rd row:
# cavities <- cavities[-3,]
# print(cavities)

# Alternatively, we can use a more tidyverse approach - you'll learn to develop your own preferences over time
cavities <- cavities %>%
  distinct(.keep_all = TRUE)
print(cavities)

Great! That worked, now lets look at the last table we loaded named desserts:

print(desserts)

Merge Data

Now we can practice our hard-earned join skills by applying a full-join to keep all records from both complete tables:

adulting_is_hard <- 
  cavities %>% 
  full_join(desserts)
Joining, by = "Name"
  
print(adulting_is_hard)

Data Visualization

Finally, this wouldn’t be a proper R demonstration without some kind of fun visualization:

And if you want to start getting fancy, check out the plotly package in R!!


library(plotly)

cavity_year <- read_tsv(here("data", "cavities_yr.tsv")) %>% 
  left_join(adulting_is_hard) %>% 
  pivot_longer(2:11, names_to="Year")

cavity_fig <- cavity_year %>% 
  plot_ly(
    x =~Name, 
    y= ~value,
    frame= ~Year,
    type="scatter", 
    mode="markers",
    showlegend=F,
    color = ~Name
    )

cavity_fig
LS0tDQp0aXRsZTogIkRheSAzIERlbW86IFIgTm90ZWJvb2siDQphdXRob3I6IEJlbmphbWluIEhldG1hbg0KZGF0ZTogIjIwMjItMDItMDgiDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQojIyMgVGhpcyBpcyBhbiBSIE1hcmtkb3duIG5vdGVib29rLiANCg0KIyMjIyBUaGVzZSBub3RlYm9va3MgYXJlIGFuIGV4Y2VsbGVudCBvcHRpb24gd2hlbiB5b3UncmUgdGVzdGluZyBvdXQgbmV3IGNvZGUgb3IgZGV2ZWxvcGluZyBhbiBhbmFseXNpcyBiZWNhc2UgdGhleSBtYWtlIGl0IHN1cGVyIGVhc3kgdG8gY2FwdHVyZSB5b3VyIHRob3VnaHQgcHJvY2VzcyBhbmQgaW50ZXJtZWRpYXRlIHJlc3VsdHMgYWxvbmcgdGhlIHdheS4gDQoNClRoZSBzYW1lIGNvbnZlbnRpb25zIGFwcGx5IGFzICptYXJrZG93biBkb2N1bWVudHMqIHRoYXQgeW91IHdvdWxkIGtuaXQgdG8gKnBkZiosICp3b3JkKiwgb3IgKnBvd2VycG9pbnQqLCBob3dldmVyIHRoZXNlIG5vdGVib29rcyBhcmUgaW50ZW5kZWQgbW9yZSBhcyBhICp3b3JrYm9vayBmb3JtYXQqIGFuZCBnaXZlIHlvdSBzb21lICoqZW5oYW5jZWQgZm9ybWF0dGluZyoqIHRvIGFsbG93IHlvdSB0byBmb2xsb3cgd2hhdCB5b3VyIGNvZGUgd2FzIGRvaW5nIGxhdGVyLiANCg0KUmVjYWxsOiByZWZlciB0byB0aGUgW1JNYXJrZG93biBDaGVhdHNoZWV0c10oaHR0cHM6Ly9yc3R1ZGlvLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAxNS8wMi9ybWFya2Rvd24tY2hlYXRzaGVldC5wZGYpIGZvciBNYXJrZG93biB0aXBzIGFuZCB0cmlja3MhIA0KDQo+IEVhY2ggdGltZSB5b3Ugc2F2ZSB0aGUgbm90ZWJvb2ssIFIgd2lsbCByZW5kZXIgaXQgYXMgYW4gKioqSFRNTCBmaWxlKioqIHRoYXQgeW91IGNhbiBvcGVuIGFuZCBicm93c2UgaW4geW91ciB3ZWIgYnJvd3Nlci4gT3IgeW91IGNhbiBjbGljayAqUFJFVklFVyogYXQgdGhlIHRvcCBvZiB0aGUgc2NyZWVuIGFuZCB5b3UnbGwgc2VlIGEgcHJldmlldyBvZiB0aGUgbm90ZWJvb2sgaW4gdGhlIFJTdHVkaW8gVmlld2VyIHBhbmUuIA0KDQpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0NCg0KIyBSZWNhbGwgdGhhdCBiZWNhdXNlIHdlIHNldCBpbmNsdWRlPUZBTFNFIGFib3ZlLCB3ZSBjYW4gd3JpdGUgYW55dGhpbmcgd2Ugd2FudCBpbiB0aGlzIGJveCBhbmQgaXQgd29uJ3QgYmUgb3V0cHV0IHRvIHRoZSBmaW5hbCBkb2N1bWVudC4gDQojIFRoZSBjb2RlIGluIHRoZSBib3ggd2lsbCBzdGlsbCBydW4sIGhvd2V2ZXIuIA0KDQpsaWJyYXJ5KHRpZHl2ZXJzZSkNCmhlcmU6OmlfYW0oIkRheTNfRGVtby5SbWQiKQ0KbGlicmFyeShoZXJlKQ0KDQpgYGANCg0KIyMgUmVhZGluZyBEYXRhOg0KQXMgd2Ugc2F3IGluIHRoZSAqKjEwIENvbnNpZGVyYXRpb25zIGZvciBEYXRhIEFuYWx5c2lzKiosIHRoZSBmaXJzdCBzdGVwIHdlJ2xsIG9mdGVuIHdhbnQgdG8gY29uc2lkZXIgaXMgcmVhZGluZyBvdXIgZGF0YSBpbnRvIFIsIHNvIGxldHMgZG8gdGhhdCBub3chIA0KDQpgYGB7ciByZWFkaW5nX2RhdGEsIG1lc3NhZ2U9RkFMU0V9DQpjYXZpdHkxIDwtIHJlYWRfdHN2KGhlcmUoImRhdGEiLCJjYXZpdHlfcHQxLnRzdiIpKQ0KY2F2aXR5MiA8LSByZWFkX3RzdihoZXJlKCJkYXRhIiwiY2F2aXR5X3B0Mi50c3YiKSkNCmRlc3NlcnRzIDwtIHJlYWRfdHN2KGhlcmUoImRhdGEiLCJkZXNzZXJ0LnRzdiIpKQ0KDQpgYGANCg0KTGV0J3MgZ28gYWhlYWQgYW5kIGhhdmUgYSBxdWljayBsb29rIGF0IHNvbWUgb2YgdGhlIGRhdGEgd2UganVzdCBsb2FkZWQ6DQpgYGB7cn0NCmNhdml0eTENCmNhdml0eTINCiMgcHJpbnQoY2F2aXR5MSkNCiMgcHJpbnQoY2F2aXR5MikNCmBgYA0KIyMgQXBwZW5kIERhdGENCkl0IGxvb2tzIGxpa2UgKipjYXZpdHkxKiogYW5kICoqY2F2aXR5MioqIGFyZSBpbmNvbXBsZXRlLCB3ZSdsbCBuZWVkIHRvIGFwcGVuZCB0aG9zZSB0b2dldGhlciB0byBnZXQgdGhlIGZ1bGwgc2V0IG9mIGNhdml0eSBkYXRhOg0KYGBge3J9DQpjYXZpdGllcyA8LSBiaW5kX3Jvd3MoY2F2aXR5MSwgY2F2aXR5MikNCnByaW50KGNhdml0aWVzKQ0KYGBgDQoNCg0KIyMgQ2xlYW4gRGF0YQ0KSG1tLCAqSm9hbm5lKiBoYXMgYmVlbiBkdXBsaWNhdGVkIGluIHRoZSBkYXRhc2V0Li4gd2hhdCBhcmUgc29tZSB3YXlzIHRoYXQgd2UgY2FuIGRyb3AgdGhlIGR1cGxpY2F0ZWQgcmVjb3JkPw0KDQpgYGB7cn0NCiMgV2UgY291bGQgdXNlIGJhc2UgUiBpbmRleGluZyBsaWtlIHdlIGxlYXJuZWQgaW4gRGF5IDEsIGFuZCBkcm9wIHRoZSAzcmQgcm93Og0KIyBjYXZpdGllcyA8LSBjYXZpdGllc1stMyxdDQojIHByaW50KGNhdml0aWVzKQ0KDQojIEFsdGVybmF0aXZlbHksIHdlIGNhbiB1c2UgYSBtb3JlIHRpZHl2ZXJzZSBhcHByb2FjaCAtIHlvdSdsbCBsZWFybiB0byBkZXZlbG9wIHlvdXIgb3duIHByZWZlcmVuY2VzIG92ZXIgdGltZQ0KY2F2aXRpZXMgPC0gY2F2aXRpZXMgJT4lDQogIGRpc3RpbmN0KC5rZWVwX2FsbCA9IFRSVUUpDQpwcmludChjYXZpdGllcykNCmBgYA0KR3JlYXQhIFRoYXQgd29ya2VkLCBub3cgbGV0cyBsb29rIGF0IHRoZSBsYXN0IHRhYmxlIHdlIGxvYWRlZCBuYW1lZCAqZGVzc2VydHMqOiANCmBgYHtyfQ0KcHJpbnQoZGVzc2VydHMpDQpgYGANCg0KIyMgTWVyZ2UgRGF0YQ0KTm93IHdlIGNhbiBwcmFjdGljZSBvdXIgaGFyZC1lYXJuZWQgKipqb2luKiogc2tpbGxzIGJ5IGFwcGx5aW5nIGEgKipmdWxsLWpvaW4qKiB0byBrZWVwIGFsbCByZWNvcmRzIGZyb20gYm90aCBjb21wbGV0ZSB0YWJsZXM6DQpgYGB7cn0NCmFkdWx0aW5nX2lzX2hhcmQgPC0gDQogIGNhdml0aWVzICU+JSANCiAgZnVsbF9qb2luKGRlc3NlcnRzKQ0KICANCnByaW50KGFkdWx0aW5nX2lzX2hhcmQpDQpgYGANCg0KIyMgRGF0YSBWaXN1YWxpemF0aW9uDQpGaW5hbGx5LCB0aGlzIHdvdWxkbid0IGJlIGEgcHJvcGVyIFIgZGVtb25zdHJhdGlvbiB3aXRob3V0IHNvbWUga2luZCBvZiAqKipmdW4gdmlzdWFsaXphdGlvbioqKjogDQpgYGB7ciBWaXN1YWxpemF0aW9uLCBlY2hvPUZBTFNFLCBmaWcuaGVpZ2h0PTUsIGZpZy53aWR0aD02fQ0KbGlicmFyeShnZ2ltYWdlKQ0KDQppbWFnZXMgPC0gYygiaW1hZ2VzL2ljZWRjb2ZmZWUucG5nIiwNCiAgICAgICAgICAgICJpbWFnZXMvY3JvaXNzYW50LnBuZyIsDQogICAgICAgICAgICAiaW1hZ2VzL3RpcmFtaXN1LnBuZyIsDQogICAgICAgICAgICAiaW1hZ2VzL2Nob2NvbGF0ZS5wbmciLA0KICAgICAgICAgICAgImltYWdlcy9jYXBwYWNpbm8ucG5nIiwNCiAgICAgICAgICAgICJpbWFnZXMvcGVhbnV0YnV0dGVyLnBuZyIsDQogICAgICAgICAgICAiaW1hZ2VzL2d1bW15YmVhci5wbmciLA0KICAgICAgICAgICAgImltYWdlcy9vcmFuZ2VfY2FrZS5wbmciDQogICAgICAgICAgICApDQoNCmFkdWx0aW5nX2lzX2hhcmQkaW1hZ2UgPC0gaW1hZ2VzDQoNCmdncGxvdChkYXRhID0gYWR1bHRpbmdfaXNfaGFyZCwgYWVzKHg9RGVzc2VydHMud2ssIHk9Q2F2aXRpZXMuMTB5cikpICsNCiAgZ2VvbV9pbWFnZShhZXMoaW1hZ2U9aW1hZ2UpLCBzaXplID0gMC4xKSArIA0KICBnZW9tX2xhYmVsKGFlcyhsYWJlbCA9IE5hbWUpLCBudWRnZV94ID0gMC41LCBudWRnZV95ID0gMC4yNSkgKyANCiAgdGhlbWVfbWluaW1hbCgpICsNCiAgbGFicyh0aXRsZT0iTGV0IHRoZW0gZWF0IGNha2UhIiwNCiAgICAgICBzdWJ0aXRsZT0iKEJ1dCBhbHNvIGxldCdzIHByb21vdGUgZ29vZCBkZW50YWwgaHlnaWVuZSkiLA0KICAgICAgIHggPSAiQXZnIERlc3NlcnRzIHBlciBXZWVrIiwNCiAgICAgICB5ID0gIlRvdGFsICMgQ2F2aXRpZXMgaW4gMTAgeWVhciBwZXJpb2Q6IDIwMTAtMjAxOSIpDQoNCmBgYA0KDQpBbmQgaWYgeW91IHdhbnQgdG8gc3RhcnQgZ2V0dGluZyBmYW5jeSwgY2hlY2sgb3V0IHRoZSBbcGxvdGx5XShodHRwczovL3Bsb3RseS5jb20vci9hbmltYXRpb25zLyNmcmFtZXMpIHBhY2thZ2UgaW4gUiEhIA0KYGBge3IgcGxvdGx5LCBtZXNzYWdlPUZBTFNFfQ0KDQpsaWJyYXJ5KHBsb3RseSkNCg0KY2F2aXR5X3llYXIgPC0gcmVhZF90c3YoaGVyZSgiZGF0YSIsICJjYXZpdGllc195ci50c3YiKSkgJT4lIA0KICBsZWZ0X2pvaW4oYWR1bHRpbmdfaXNfaGFyZCkgJT4lIA0KICBwaXZvdF9sb25nZXIoMjoxMSwgbmFtZXNfdG89IlllYXIiKQ0KDQpjYXZpdHlfZmlnIDwtIGNhdml0eV95ZWFyICU+JSANCiAgcGxvdF9seSgNCiAgICB4ID1+TmFtZSwgDQogICAgeT0gfnZhbHVlLA0KICAgIGZyYW1lPSB+WWVhciwNCiAgICB0eXBlPSJzY2F0dGVyIiwgDQogICAgbW9kZT0ibWFya2VycyIsDQogICAgc2hvd2xlZ2VuZD1GLA0KICAgIGNvbG9yID0gfk5hbWUNCiAgICApDQoNCmNhdml0eV9maWcNCmBgYA0KDQoNCg==